package com.mall.service;

import com.mall.dto.CartOperateDTO;
import com.mall.vo.CartVO;

/**
 * 购物车服务接口
 * 
 * @author Mall Team
 */
public interface CartService {
    
    /**
     * 添加商品到购物车
     */
    void addToCart(Long userId, CartOperateDTO.AddToCartDTO addToCartDTO);
    
    /**
     * 获取用户购物车列表
     */
    CartVO.CartSummaryVO getCartList(Long userId);
    
    /**
     * 更新购物车商品数量
     */
    void updateCartQuantity(Long userId, CartOperateDTO.UpdateCartDTO updateCartDTO);
    
    /**
     * 更新购物车商品选中状态
     */
    void updateCartChecked(Long userId, CartOperateDTO.UpdateCartDTO updateCartDTO);
    
    /**
     * 批量选择购物车商品
     */
    void batchSelectCart(Long userId, CartOperateDTO.BatchSelectDTO batchSelectDTO);
    
    /**
     * 删除购物车商品
     */
    void removeFromCart(Long userId, Long cartId);
    
    /**
     * 批量删除购物车商品
     */
    void batchRemoveFromCart(Long userId, Long[] cartIds);
    
    /**
     * 清空购物车
     */
    void clearCart(Long userId);
    
    /**
     * 清空选中的购物车商品
     */
    void clearCheckedCart(Long userId);
    
    /**
     * 获取购物车商品数量
     */
    Long getCartCount(Long userId);
    
    /**
     * 获取选中的购物车商品
     */
    CartVO.CartSummaryVO getCheckedCartItems(Long userId);
    
    /**
     * 验证购物车商品（下单前检查）
     */
    boolean validateCartItems(Long userId, Long[] cartIds);
/**
 * 管理端：获取全部购物车项
 */
java.util.List<com.mall.entity.Cart> listAll();

/**
 * 管理端：根据ID获取购物车项
 */
com.mall.entity.Cart getById(Long id);

/**
 * 管理端：新增购物车项
 */
void add(com.mall.entity.Cart cart);

/**
 * 管理端：更新购物车项
 */
void update(com.mall.entity.Cart cart);

/**
 * 管理端：删除购物车项
 */
void delete(Long id);

}